package graph.inter;

import graph.undirectedgraph.Edge;

/**
 * 无向图接口
 */
public interface UndirectedGraph extends CustGraph {
    /**
     * 最小生成树 -- 普里姆算法
     */
    void miniSpanTreePrim();

    /**
     * 最小生成树 -- 克鲁斯卡尔算法
     */
    void miniSpanTreeKruskal();

    /**
     * 最短路径 -- 迪杰斯特拉算法
     */
    void shortestPathDijstra(int start, int[] path, int[] dist);

    /**
     * 按照权值将边集数组进行升序排序
     *
     * @param edges
     */
    default void sortEdges(Edge[] edges) {
        for (int i = 0; i < edges.length - 1; i++) {
            for (int j = i + 1; j < edges.length; j++) {
                if (edges[i].getWeight() > edges[j].getWeight()) {
                    Edge temp = edges[i];
                    edges[i] = edges[j];
                    edges[j] = temp;
                }
            }
        }
    }
}
